// this file is inserted (by chibios_hwdef.py) into hwdef.h when
// configuring for AP_Periph builds

#ifndef AP_SCHEDULER_ENABLED
#define AP_SCHEDULER_ENABLED 0
#endif

#ifndef HAL_LOGGING_ENABLED
#define HAL_LOGGING_ENABLED 0
#endif

#ifndef HAL_GCS_ENABLED
#define HAL_GCS_ENABLED 0
#endif

/*
  AP_Periph doesn't include the SERIAL parameter tree, instead each
  supported serial device type has it's own parameter within AP_Periph
  for which port is used.
 */
#ifndef DEFAULT_SERIAL0_PROTOCOL
#define DEFAULT_SERIAL0_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL1_PROTOCOL
#define DEFAULT_SERIAL1_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL2_PROTOCOL
#define DEFAULT_SERIAL2_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL3_PROTOCOL
#define DEFAULT_SERIAL3_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL4_PROTOCOL
#define DEFAULT_SERIAL4_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL5_PROTOCOL
#define DEFAULT_SERIAL5_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL6_PROTOCOL
#define DEFAULT_SERIAL6_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL7_PROTOCOL
#define DEFAULT_SERIAL7_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL8_PROTOCOL
#define DEFAULT_SERIAL8_PROTOCOL SerialProtocol_None
#endif
#ifndef DEFAULT_SERIAL9_PROTOCOL
#define DEFAULT_SERIAL9_PROTOCOL SerialProtocol_None
#endif

#ifndef HAL_LOGGING_MAVLINK_ENABLED
#define HAL_LOGGING_MAVLINK_ENABLED 0
#endif

#ifndef AP_AHRS_ENABLED
#define AP_AHRS_ENABLED 0
#endif

#ifndef AP_MISSION_ENABLED
#define AP_MISSION_ENABLED 0
#endif

#ifndef HAL_RALLY_ENABLED
#define HAL_RALLY_ENABLED 0
#endif

#ifndef HAL_NMEA_OUTPUT_ENABLED
#define HAL_NMEA_OUTPUT_ENABLED 0
#endif

#ifndef HAL_CAN_DEFAULT_NODE_ID
#define HAL_CAN_DEFAULT_NODE_ID 0
#endif

#define PERIPH_FW TRUE
#define HAL_BUILD_AP_PERIPH

#ifndef HAL_WATCHDOG_ENABLED_DEFAULT
#define HAL_WATCHDOG_ENABLED_DEFAULT true
#endif

#ifndef AP_FETTEC_ONEWIRE_ENABLED
#define AP_FETTEC_ONEWIRE_ENABLED 0
#endif

#ifndef HAL_TORQEEDO_ENABLED
#define HAL_TORQEEDO_ENABLED 0
#endif

#ifndef AP_KDECAN_ENABLED
#define AP_KDECAN_ENABLED 0
#endif

#ifndef HAL_GENERATOR_ENABLED
#define HAL_GENERATOR_ENABLED 0
#endif

#ifndef HAL_BARO_WIND_COMP_ENABLED
#define HAL_BARO_WIND_COMP_ENABLED 0
#endif

#ifndef HAL_UART_STATS_ENABLED
#define HAL_UART_STATS_ENABLED (HAL_GCS_ENABLED || HAL_LOGGING_ENABLED)
#endif

#ifndef HAL_SUPPORT_RCOUT_SERIAL
#define HAL_SUPPORT_RCOUT_SERIAL 0
#endif

#ifndef AP_AIRSPEED_AUTOCAL_ENABLE
#define AP_AIRSPEED_AUTOCAL_ENABLE 0
#endif

#ifndef AP_STATS_ENABLED
#define AP_STATS_ENABLED 0
#endif

#ifndef AP_VOLZ_ENABLED
#define AP_VOLZ_ENABLED 0
#endif

#ifndef AP_ROBOTISSERVO_ENABLED
#define AP_ROBOTISSERVO_ENABLED 0
#endif

#ifndef AP_SBUSOUTPUT_ENABLED
#define AP_SBUSOUTPUT_ENABLED 0
#endif

// by default an AP_Periph defines as many servo output channels as
// there are PWM outputs:
#ifndef NUM_SERVO_CHANNELS
#ifdef HAL_PWM_COUNT
#define NUM_SERVO_CHANNELS HAL_PWM_COUNT
#else
#define NUM_SERVO_CHANNELS 0
#endif
#endif

#ifndef AP_BATTERY_ESC_ENABLED
#define AP_BATTERY_ESC_ENABLED 0
#endif

#ifndef AP_BATTERY_WATT_MAX_ENABLED
#define AP_BATTERY_WATT_MAX_ENABLED 0
#endif

// disable compass calibrations on periphs; cal is done on the autopilot
#ifndef COMPASS_CAL_ENABLED
#define COMPASS_CAL_ENABLED 0
#endif
#ifndef AP_COMPASS_CALIBRATION_FIXED_YAW_ENABLED
#define AP_COMPASS_CALIBRATION_FIXED_YAW_ENABLED 0
#endif
#ifndef COMPASS_MOT_ENABLED
#define COMPASS_MOT_ENABLED 0
#endif
#ifndef COMPASS_LEARN_ENABLED
#define COMPASS_LEARN_ENABLED 0
#endif

#ifndef AP_EXTERNAL_AHRS_ENABLED
#define AP_EXTERNAL_AHRS_ENABLED 0
#endif

// disable RC_Channels library:
#ifndef AP_RC_CHANNEL_ENABLED
#define AP_RC_CHANNEL_ENABLED 0
#endif

#define HAL_CRSF_TELEM_ENABLED 0
#define AP_GHST_TELEM_ENABLED 0

#ifndef AP_SERVORELAYEVENTS_ENABLED
#define AP_SERVORELAYEVENTS_ENABLED 0
#endif

/*
 * sanity checks that hwdefs are up-to-date in terms of how they are
 * trying to configure the peripheral:
 */
#ifdef HAL_PERIPH_ENABLE_DEVICE_TEMPERATURE
#error "Change 'define HAL_PERIPH_ENABLE_DEVICE_TEMPERATURE' to 'define AP_PERIPH_DEVICE_TEMPERATURE_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_MSP
#error "Change 'define HAL_PERIPH_ENABLE_MSP' to 'define AP_PERIPH_MSP_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_NOTIFY
#error "Change 'define HAL_PERIPH_ENABLE_NOTIFY' to 'define AP_PERIPH_NOTIFY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_SERIAL_OPTIONS
#error "Change 'define HAL_PERIPH_ENABLE_SERIAL_OPTIONS' to 'define AP_PERIPH_SERIAL_OPTIONS_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_GPS
#error "Change 'define HAL_PERIPH_ENABLE_GPS' to 'define AP_PERIPH_GPS_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_BATTERY
#error "Change 'define HAL_PERIPH_ENABLE_BATTERY' to 'define AP_PERIPH_BATTERY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_BATTERY_BALANCE
#error "Change 'define HAL_PERIPH_ENABLE_BATTERY_BALANCE' to 'define AP_PERIPH_BATTERY_BALANCE_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_MAG
#error "Change 'define HAL_PERIPH_ENABLE_MAG' to 'define AP_PERIPH_MAG_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_BARO
#error "Change 'define HAL_PERIPH_ENABLE_BARO' to 'define AP_PERIPH_BARO_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_RC_OUT
#error "Change 'define HAL_PERIPH_ENABLE_RC_OUT' to 'define AP_PERIPH_RC_OUT_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_RANGEFINDER
#error "Change 'define HAL_PERIPH_ENABLE_RANGEFINDER' to 'define AP_PERIPH_RANGEFINDER_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_EFI
#error "Change 'define AP_PERIPH_EFI_ENABLED' to 'define AP_PERIPH_EFI_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_IMU
#error "Change 'define HAL_PERIPH_ENABLE_IMU' to 'define AP_PERIPH_IMU_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_RTC
#error "Change 'define HAL_PERIPH_ENABLE_RTC' to 'define AP_PERIPH_RTC_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_ADSB
#error "Change 'define HAL_PERIPH_ENABLE_ADSB' to 'define AP_PERIPH_ADSB_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_RELAY
#error "Change 'define HAL_PERIPH_ENABLE_RELAY' to 'define AP_PERIPH_RELAY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_RCIN
#error "Change 'define HAL_PERIPH_ENABLE_RCIN' to 'define AP_PERIPH_RCIN_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_RPM
#error "Change 'define HAL_PERIPH_ENABLE_RPM' to 'define AP_PERIPH_RPM_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_RPM_STREAM
#error "Change 'define HAL_PERIPH_ENABLE_RPM_STREAM' to 'define AP_PERIPH_RPM_STREAM_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_PROXIMITY
#error "Change 'define HAL_PERIPH_ENABLE_PROXIMITY' to 'define AP_PERIPH_PROXIMITY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_AIRSPEED
#error "Change 'define HAL_PERIPH_ENABLE_AIRSPEED' to 'define AP_PERIPH_AIRSPEED_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_HWESC
#error "Change 'define HAL_PERIPH_ENABLE_HWESC' to 'define AP_PERIPH_HOBBYWING_ESC_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_NETWORKING
#error "Change 'define HAL_PERIPH_ENABLE_NETWORKING' to 'define AP_PERIPH_NETWORKING_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_PWM_HARDPOINT
#error "Change 'define HAL_PERIPH_ENABLE_PWM_HARDPOINT' to 'define AP_PERIPH_PWM_HARDPOINT_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_ESC_APD
#error "Change 'define HAL_PERIPH_ENABLE_ESC_APD' to 'define AP_PERIPH_ESC_APD_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_NCP5623_LED_WITHOUT_NOTIFY
#error "Change 'define HAL_PERIPH_ENABLE_NCP5623_LED_WITHOUT_NOTIFY' to 'define AP_PERIPH_NCP5623_LED_WITHOUT_NOTIFY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_TOSHIBA_LED_WITHOUT_NOTIFY
#error "Change 'define HAL_PERIPH_ENABLE_TOSHIBA_LED_WITHOUT_NOTIFY' to 'define AP_PERIPH_TOSHIBA_LED_WITHOUT_NOTIFY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_NCP5623_BGR_LED_WITHOUT_NOTIFY
#error "Change 'define HAL_PERIPH_ENABLE_NCP5623_BGR_LED_WITHOUT_NOTIFY' to 'define AP_PERIPH_NCP5623_BGR_LED_WITHOUT_NOTIFY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_BUZZER_WITHOUT_NOTIFY
#error "Change 'define HAL_PERIPH_ENABLE_BUZZER_WITHOUT_NOTIFY' to 'define AP_PERIPH_BUZZER_WITHOUT_NOTIFY_ENABLED 1'"
#endif
#ifdef HAL_PERIPH_ENABLE_BUZZER
#error "Change 'define HAL_PERIPH_ENABLE_BUZZER' to 'define AP_PERIPH_BUZZER_ENABLED 1'"
#endif

/*
 * defaults for various AP_Periph features:
 */
#ifndef AP_PERIPH_DEVICE_TEMPERATURE_ENABLED
#define AP_PERIPH_DEVICE_TEMPERATURE_ENABLED 0
#endif
#ifndef AP_PERIPH_MSP_ENABLED
#define AP_PERIPH_MSP_ENABLED 0
#endif
#ifndef AP_PERIPH_NOTIFY_ENABLED
#define AP_PERIPH_NOTIFY_ENABLED 0
#endif
#ifndef AP_PERIPH_SERIAL_OPTIONS_ENABLED
#define AP_PERIPH_SERIAL_OPTIONS_ENABLED 0
#endif
#ifndef AP_PERIPH_BATTERY_ENABLED
#define AP_PERIPH_BATTERY_ENABLED 0
#endif
#ifndef AP_PERIPH_RELAY_ENABLED
#define AP_PERIPH_RELAY_ENABLED 0
#endif
#ifndef AP_PERIPH_BATTERY_BALANCE_ENABLED
#define AP_PERIPH_BATTERY_BALANCE_ENABLED 0
#endif
#ifndef AP_PERIPH_BATTERY_TAG_ENABLED
#define AP_PERIPH_BATTERY_TAG_ENABLED 0
#endif
#ifndef AP_PERIPH_PROXIMITY_ENABLED
#define AP_PERIPH_PROXIMITY_ENABLED 0
#endif
#ifndef AP_PERIPH_GPS_ENABLED
#define AP_PERIPH_GPS_ENABLED 0
#endif
#ifndef AP_PERIPH_ADSB_ENABLED
#define AP_PERIPH_ADSB_ENABLED 0
#endif
#ifndef AP_PERIPH_MAG_ENABLED
#define AP_PERIPH_MAG_ENABLED 0
#endif
#ifndef AP_PERIPH_BARO_ENABLED
#define AP_PERIPH_BARO_ENABLED 0
#endif
#ifndef AP_PERIPH_RANGEFINDER_ENABLED
#define AP_PERIPH_RANGEFINDER_ENABLED 0
#endif
#ifndef AP_PERIPH_IMU_ENABLED
#define AP_PERIPH_IMU_ENABLED 0
#endif
#ifndef AP_PERIPH_RC_OUT_ENABLED
#define AP_PERIPH_RC_OUT_ENABLED 0
#endif
#ifndef AP_PERIPH_EFI_ENABLED
#define AP_PERIPH_EFI_ENABLED 0
#endif
#ifndef AP_PERIPH_RTC_ENABLED
#define AP_PERIPH_RTC_ENABLED AP_PERIPH_BATTERY_TAG_ENABLED
#endif
#ifndef AP_PERIPH_RTC_GLOBALTIME_ENABLED
#define AP_PERIPH_RTC_GLOBALTIME_ENABLED 0
#endif
#ifndef AP_PERIPH_RCIN_ENABLED
#define AP_PERIPH_RCIN_ENABLED 0
#endif
#ifndef AP_PERIPH_RPM_ENABLED
#define AP_PERIPH_RPM_ENABLED 0
#endif
#ifndef AP_PERIPH_RPM_STREAM_ENABLED
#define AP_PERIPH_RPM_STREAM_ENABLED AP_PERIPH_RPM_ENABLED
#endif
#ifndef AP_PERIPH_AIRSPEED_ENABLED
#define AP_PERIPH_AIRSPEED_ENABLED 0
#endif
#ifndef AP_PERIPH_HOBBYWING_ESC_ENABLED
#define AP_PERIPH_HOBBYWING_ESC_ENABLED 0
#endif
#ifndef AP_PERIPH_NETWORKING_ENABLED
#define AP_PERIPH_NETWORKING_ENABLED 0
#endif
#ifndef AP_PERIPH_PWM_HARDPOINT_ENABLED
#define AP_PERIPH_PWM_HARDPOINT_ENABLED 0
#endif
#ifndef AP_PERIPH_ESC_APD_ENABLED
#define AP_PERIPH_ESC_APD_ENABLED 0
#endif
#ifndef AP_PERIPH_NCP5623_LED_WITHOUT_NOTIFY_ENABLED
#define AP_PERIPH_NCP5623_LED_WITHOUT_NOTIFY_ENABLED 0
#endif
#ifndef AP_PERIPH_TOSHIBA_LED_WITHOUT_NOTIFY_ENABLED
#define AP_PERIPH_TOSHIBA_LED_WITHOUT_NOTIFY_ENABLED 0
#endif
#ifndef AP_PERIPH_NCP5623_BGR_LED_WITHOUT_NOTIFY_ENABLED
#define AP_PERIPH_NCP5623_BGR_LED_WITHOUT_NOTIFY_ENABLED 0
#endif
#ifndef AP_PERIPH_BUZZER_ENABLED
#define AP_PERIPH_BUZZER_ENABLED 0
#endif
#ifndef AP_PERIPH_BUZZER_WITHOUT_NOTIFY_ENABLED
#define AP_PERIPH_BUZZER_WITHOUT_NOTIFY_ENABLED 0
#endif

/*
 * turning on of ArduPilot features based on which AP_Periph features
 * are enabled:
 */
#define AP_BATTERY_ENABLED AP_PERIPH_BATTERY_ENABLED
#define AP_GPS_ENABLED AP_PERIPH_GPS_ENABLED
#define AP_COMPASS_ENABLED AP_PERIPH_MAG_ENABLED
#define AP_BARO_ENABLED AP_PERIPH_BARO_ENABLED
#ifndef AP_RANGEFINDER_ENABLED
#define AP_RANGEFINDER_ENABLED AP_PERIPH_RANGEFINDER_ENABLED
#endif
#define AP_INERTIALSENSOR_ENABLED AP_PERIPH_IMU_ENABLED
#define AP_INERTIALSENSOR_ALLOW_NO_SENSORS AP_PERIPH_IMU_ENABLED
#define AP_RTC_ENABLED AP_PERIPH_RTC_ENABLED
#ifndef AP_RCPROTOCOL_ENABLED
#define AP_RCPROTOCOL_ENABLED AP_PERIPH_RCIN_ENABLED
#endif
#ifndef AP_RPM_ENABLED
#define AP_RPM_ENABLED AP_PERIPH_RPM_ENABLED
#endif
#ifndef AP_TEMPERATURE_SENSOR_ENABLED
#define AP_TEMPERATURE_SENSOR_ENABLED AP_PERIPH_DEVICE_TEMPERATURE_ENABLED
#endif
#ifndef HAL_MSP_ENABLED
#define HAL_MSP_ENABLED AP_PERIPH_MSP_ENABLED
#endif
#ifndef AP_RELAY_ENABLED
#define AP_RELAY_ENABLED AP_PERIPH_RELAY_ENABLED
#endif
#ifndef HAL_PROXIMITY_ENABLED
#define HAL_PROXIMITY_ENABLED AP_PERIPH_PROXIMITY_ENABLED
#endif
#ifndef HAL_EFI_ENABLED
#define HAL_EFI_ENABLED AP_PERIPH_EFI_ENABLED
#endif

/*
 * GPS Backends - we selectively turn backends on.
 *   Note also that f103-GPS explicitly disables some of these backends.
 */
#define AP_GPS_BACKEND_DEFAULT_ENABLED 0
#ifndef AP_GPS_UBLOX_ENABLED
#define AP_GPS_UBLOX_ENABLED AP_PERIPH_GPS_ENABLED
#endif
#ifndef HAL_MSP_GPS_ENABLED
#define HAL_MSP_GPS_ENABLED AP_PERIPH_GPS_ENABLED && HAL_MSP_SENSORS_ENABLED
#endif

#ifndef AP_GPS_ERB_ENABLED
#define AP_GPS_ERB_ENABLED 0
#endif

#ifndef AP_GPS_GSOF_ENABLED
#define AP_GPS_GSOF_ENABLED AP_PERIPH_GPS_ENABLED
#endif

#ifndef AP_GPS_NMEA_ENABLED
#define AP_GPS_NMEA_ENABLED 0
#endif

#ifndef AP_GPS_SBF_ENABLED
#define AP_GPS_SBF_ENABLED AP_PERIPH_GPS_ENABLED
#endif

#ifndef AP_GPS_SBP_ENABLED
#define AP_GPS_SBP_ENABLED 0
#endif

#ifndef AP_GPS_SBP2_ENABLED
#define AP_GPS_SBP2_ENABLED 0
#endif

#ifndef AP_GPS_SIRF_ENABLED
#define AP_GPS_SIRF_ENABLED 0
#endif

#ifndef AP_GPS_MAV_ENABLED
#define AP_GPS_MAV_ENABLED 0
#endif

#ifndef AP_GPS_NOVA_ENABLED
#define AP_GPS_NOVA_ENABLED AP_PERIPH_GPS_ENABLED
#endif

#ifndef AP_SIM_GPS_ENABLED
#define AP_SIM_GPS_ENABLED (AP_SIM_ENABLED && AP_GPS_ENABLED)
#endif

#ifndef AP_SIM_VICON_ENABLED
#define AP_SIM_VICON_ENABLED 0
#endif  // AP_SIM_VICON_ENABLED

/*
 * Airspeed Backends - we selectively turn backends *off*
 */
#ifndef AP_AIRSPEED_ANALOG_ENABLED
#define AP_AIRSPEED_ANALOG_ENABLED 0
#endif

// disable various rangefinder backends
#define AP_RANGEFINDER_ANALOG_ENABLED 0
#define AP_RANGEFINDER_HC_SR04_ENABLED 0
#define AP_RANGEFINDER_PWM_ENABLED 0

// AP_Periph expects ROTATION_NONE
#ifndef AP_RANGEFINDER_DEFAULT_ORIENTATION
#define AP_RANGEFINDER_DEFAULT_ORIENTATION ROTATION_NONE
#endif

// no CAN manager in AP_Periph:
#define HAL_CANMANAGER_ENABLED 0

// SLCAN is off by default:
#ifndef AP_CAN_SLCAN_ENABLED
#define AP_CAN_SLCAN_ENABLED 0
#endif

// Periphs don't use the FFT library:
#ifndef HAL_GYROFFT_ENABLED
#define HAL_GYROFFT_ENABLED 0
#endif

// MSP parsing is off by default in AP_Periph:
#ifndef HAL_MSP_ENABLED
#define HAL_MSP_ENABLED 0
#endif

// periph does not make use of compass scaling or diagonals
#ifndef AP_COMPASS_DIAGONALS_ENABLED
#define AP_COMPASS_DIAGONALS_ENABLED 0
#endif

// disable various battery monitor backends:
#ifndef AP_BATTERY_SYNTHETIC_CURRENT_ENABLED
#define AP_BATTERY_SYNTHETIC_CURRENT_ENABLED 0
#endif

#ifndef AP_BATT_MONITOR_MAX_INSTANCES
#define AP_BATT_MONITOR_MAX_INSTANCES 1
#endif

#ifndef AP_BATTERY_SUM_ENABLED
#define AP_BATTERY_SUM_ENABLED 0  // needs three backends
#endif  // AP_BATTERY_SUM_ENABLED

// Capacity tracking off
#ifndef AP_BATT_MONITOR_BATTERY_CAPACITY
#define AP_BATT_MONITOR_BATTERY_CAPACITY 0
#endif

#ifndef RANGEFINDER_MAX_INSTANCES
#define RANGEFINDER_MAX_INSTANCES 1
#endif

#ifndef HAL_ADSB_ENABLED
#define HAL_ADSB_ENABLED 0
#endif

#ifndef AP_AIS_ENABLED
#define AP_AIS_ENABLED 0
#endif

// no fence by default in AP_Periph:
#ifndef AP_FENCE_ENABLED
#define AP_FENCE_ENABLED 0
#endif

// periph does not save temperature cals etc:
#ifndef HAL_ENABLE_SAVE_PERSISTENT_PARAMS
#define HAL_ENABLE_SAVE_PERSISTENT_PARAMS 0
#endif

#ifndef AP_WINCH_ENABLED
#define AP_WINCH_ENABLED 0
#endif

#ifndef HAL_VISUALODOM_ENABLED
#define HAL_VISUALODOM_ENABLED 0
#endif

#ifndef AP_VIDEOTX_ENABLED
#define AP_VIDEOTX_ENABLED 0
#endif

#ifndef AP_FRSKY_TELEM_ENABLED
#define AP_FRSKY_TELEM_ENABLED 0
#endif

#ifndef HAL_SPEKTRUM_TELEM_ENABLED
#define HAL_SPEKTRUM_TELEM_ENABLED 0
#endif

#ifndef AP_FILESYSTEM_ROMFS_ENABLED
#define AP_FILESYSTEM_ROMFS_ENABLED 0
#endif

#ifndef NOTIFY_LED_OVERRIDE_DEFAULT
#define NOTIFY_LED_OVERRIDE_DEFAULT 1       // rgb_source_t::mavlink
#endif

#ifndef HAL_PROXIMITY_ENABLED
#define HAL_PROXIMITY_ENABLED 0
#endif

#ifndef AP_SCRIPTING_ENABLED
#define AP_SCRIPTING_ENABLED 0
#endif

#ifndef HAL_SERIAL_ESC_COMM_ENABLED
#define HAL_SERIAL_ESC_COMM_ENABLED 0
#endif

#ifndef HAL_RCIN_THREAD_ENABLED
#define HAL_RCIN_THREAD_ENABLED 0
#endif

#ifndef HAL_MONITOR_THREAD_ENABLED
#define HAL_MONITOR_THREAD_ENABLED 0
#endif

#ifndef HAL_SCHEDULER_LOOP_DELAY_ENABLED
#define HAL_SCHEDULER_LOOP_DELAY_ENABLED 0
#endif

#ifndef HAL_WITH_ESC_TELEM
#define HAL_WITH_ESC_TELEM 0
#endif

#ifndef AP_BATTERY_ESC_TELEM_OUTBOUND_ENABLED
#define AP_BATTERY_ESC_TELEM_OUTBOUND_ENABLED 0
#endif

#define AP_INERTIALSENSOR_HARMONICNOTCH_ENABLED 0

#ifndef AP_RPM_STREAM_ENABLED
#define AP_RPM_STREAM_ENABLED AP_PERIPH_RPM_STREAM_ENABLED
#endif

#ifndef AP_BOOTLOADER_ALWAYS_ERASE
#define AP_BOOTLOADER_ALWAYS_ERASE 1
#endif

#ifndef GPS_MOVING_BASELINE
#define GPS_MOVING_BASELINE 0
#endif

#ifndef AP_UART_MONITOR_ENABLED
#define AP_UART_MONITOR_ENABLED AP_PERIPH_SERIAL_OPTIONS_ENABLED || (AP_PERIPH_GPS_ENABLED && (GPS_MOVING_BASELINE || BOARD_FLASH_SIZE>=256))
#endif

#ifndef HAL_BOARD_LOG_DIRECTORY
#define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS"
#endif

#ifndef HAL_BOARD_TERRAIN_DIRECTORY
#define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN"
#endif

#ifndef HAL_MAVLINK_BINDINGS_ENABLED
#define HAL_MAVLINK_BINDINGS_ENABLED AP_PERIPH_ADSB_ENABLED || HAL_GCS_ENABLED
#endif

// for boards other than AP_Periph we are always expecting delays when
// not initialised.  We can't afford that on AP_Periph as you may end
// up with a bricked node if you write a bad firmware to it.
#ifndef AP_HAL_CHIBIOS_IN_EXPECTED_DELAY_WHEN_NOT_INITIALISED
#define AP_HAL_CHIBIOS_IN_EXPECTED_DELAY_WHEN_NOT_INITIALISED 0
#endif

#ifndef AP_SERIALLED_ENABLED
#define AP_SERIALLED_ENABLED 0
#endif

#ifndef AP_OPTICALFLOW_ENABLED
#define AP_OPTICALFLOW_ENABLED 0
#endif

#ifndef HAL_BUTTON_ENABLED
#define HAL_BUTTON_ENABLED 0
#endif

#ifndef AP_NOTIFY_SCRIPTING_LED_ENABLED
#define AP_NOTIFY_SCRIPTING_LED_ENABLED 0
#endif

#ifndef AP_SCRIPTING_BINDING_VEHICLE_ENABLED
#define AP_SCRIPTING_BINDING_VEHICLE_ENABLED 0
#endif  // AP_SCRIPTING_BINDING_VEHICLE_ENABLED

#ifndef AP_PARAM_DYNAMIC_ENABLED
#define AP_PARAM_DYNAMIC_ENABLED 0
#endif

#ifndef HAL_MOUNT_ENABLED
#define HAL_MOUNT_ENABLED 0
#endif

#ifndef AP_CAMERA_ENABLED
#define AP_CAMERA_ENABLED 0
#endif

#ifndef AP_TERRAIN_AVAILABLE
#define AP_TERRAIN_AVAILABLE 0
#endif

#ifndef AP_ICENGINE_ENABLED
#define AP_ICENGINE_ENABLED 0
#endif

#ifndef AP_FILTER_ENABLED
#define AP_FILTER_ENABLED 0
#endif

#ifndef AP_ADVANCEDFAILSAFE_ENABLED
#define AP_ADVANCEDFAILSAFE_ENABLED 0
#endif

#ifndef AP_ARMING_ENABLED
#define AP_ARMING_ENABLED 0
#endif

#ifndef AP_LTM_TELEM_ENABLED
#define AP_LTM_TELEM_ENABLED 0
#endif

#ifndef AP_GRIPPER_ENABLED
#define AP_GRIPPER_ENABLED 0
#endif

#ifndef HAL_SPRAYER_ENABLED
#define HAL_SPRAYER_ENABLED 0
#endif

#ifndef AP_VEHICLE_ENABLED
#define AP_VEHICLE_ENABLED 0
#endif

#ifndef OSD_ENABLED
#define OSD_ENABLED 0
#endif

#ifndef OSD_PARAM_ENABLED
#define OSD_PARAM_ENABLED 0
#endif

#ifndef AP_SCHEDULER_ENABLED
#define AP_SCHEDULER_ENABLED 0
#endif

#ifndef AP_RC_CHANNEL_ENABLED
#define AP_RC_CHANNEL_ENABLED 0
#endif

#ifndef AP_CUSTOMROTATIONS_ENABLED
#define AP_CUSTOMROTATIONS_ENABLED 0
#endif

#ifndef AP_QUICKTUNE_ENABLED
#define AP_QUICKTUNE_ENABLED 0
#endif

#ifndef HAL_OS_POSIX_IO
#define HAL_OS_POSIX_IO 0
#endif

#ifndef HAL_USE_LOAD_MEASURE
#define HAL_USE_LOAD_MEASURE 0
#endif
